<!DOCTYPE html>
<style>
.parent {
   display: flex;
   justify-items: unsafe flex-end;
   align-items: safe flex-start;
}
.parent .child {
   display: flex;
   justify-self: unsafe flex-end;
   align-self: safe flex-start;
}
#parentId {
   justify-items: center;
   align-items: stretch;
}
#parentId .child {
   justify-self: center;
   align-self: stretch;
}
</style>
<script src="../../resources/js-test.js"></script>
<div class="parent">
    <div id="childOfDefaultParent" class="child"></div>
</div>
<div id="parentId" class="parent">
    <div id="childOfParentId" class="child"></div>
</div>
<script src="resources/alignment-parsing-utils.js"></script>
<script>
description('Test overwriting justify-self and align-self works as expected');

var parent = document.getElementById("parentId");
shouldBeEqualToString("getComputedStyle(parent, '').getPropertyValue('justify-items')", "center");
shouldBeEqualToString("getComputedStyle(parent, '').getPropertyValue('align-items')", "stretch");

var childOfDefaultParent = document.getElementById("childOfDefaultParent");
shouldBeEqualToString("getComputedStyle(childOfDefaultParent, '').getPropertyValue('justify-self')", "unsafe flex-end");
shouldBeEqualToString("getComputedStyle(childOfDefaultParent, '').getPropertyValue('align-self')", "safe flex-start");

var childOfParentId = document.getElementById("childOfParentId");
shouldBeEqualToString("getComputedStyle(childOfParentId, '').getPropertyValue('justify-self')", "center");
shouldBeEqualToString("getComputedStyle(childOfParentId, '').getPropertyValue('align-self')", "stretch");
</script>
